import axios from "axios";


// import * as API from '../main.js'
// import { Message, Loading, MessageBox } from 'element-ui';
// import router from "@/router/router";

//在当前模块中引入store




//底下的代码也是创建axios实例
axios.defaults.withCredentials = true;
//设置全局的请求次数，请求的间隙
// 重传次数
axios.defaults.retry = 0;
//延时秒数
axios.defaults.retryDelay = 10000;

let requests = axios.create({
    //基础路径
    //baseURL:'http://localhost:9090',

    baseURL:'/api',
    //请求不能超过10S
    timeout: 20000,
});
import {ElMessage} from 'element-plus';
import router from "@/router";
requests.interceptors.response.use(
    (res)=>{
        if(res.data.code=="1001"){
            router.push("/")
            ElMessage.error("登录过期了，请重新登录")
        }
        console.log(res)
        return res
    },
    (res)=>{
        // console.log(res)
        ElMessage.error(res.response.data.message)

        return res.response
    }

)
// let loading;
//
// //当前正在请求的数量
// let needLoadingRequestCount = 0;
//
// //显示loading
// function showLoading(target) {
//     // 后面这个判断很重要，因为关闭时加了抖动，此时loading对象可能还存在，
//     // 但needLoadingRequestCount已经变成0.避免这种情况下会重新创建个loading
//     if (needLoadingRequestCount === 0 && !loading) {
//         loading = Loading.service({
//             lock: true,
//             text: "正在加载",
//             background: 'rgba(0, 0, 0, 0.4)',
//             target: target || "body"
//         });
//     }
//     needLoadingRequestCount++;
// }
//
// //隐藏loading
// function hideLoading() {
//     needLoadingRequestCount--;
//     needLoadingRequestCount = Math.max(needLoadingRequestCount, 0); //做个保护
//     if (needLoadingRequestCount === 0) {
//         //关闭loading
//         toHideLoading();
//     }
// }
// //防抖：将 300ms 间隔内的关闭 loading 便合并为一次。防止连续请求时， loading闪烁的问题。
// function debounce(fn,wait){
//     var timer = null;
//     return function(){
//         if(timer !== null){
//             clearTimeout(timer);
//         }
//         timer = setTimeout(fn,wait);
//     }
// }
// var toHideLoading = debounce(()=>{
//     if(loading){
//         loading.close();
//         loading = null;
//     }
//
// }, 850);
//
//
// //请求拦截器
// requests.interceptors.request.use(
//     (config) => {
//         // 打开loading
//         if(config.headers.showLoading !== false){
//             showLoading(config.headers.loadingTarget);
//         }
//
//         const token = localStorage.getItem('token');
//         if (token) {
//             // 判断是否存在token，如果存在的话，则每个http header都加上token
//             config.headers.authorization = token; //请求头加上token
//         }
//         return config;
//     },
//     (error) => {
//         // 关闭loading
//         if(error.config.headers.showLoading !== false){
//             hideLoading();
//         }
//         // Do something with request error
//         Promise.reject(error);
//     },
// );
//
//
// // 响应拦截器
// requests.interceptors.response.use(
//     (res)=>{
//         if(res.data=="未登录"){
//             console.log(res.data)
//             this.$message.error("未登录")
//             // router.push('/login')
//         }
//         return res
//     },
//     (res)=>{
//         if(res.response) {
//             console.log(res)
//         }}
//
//     )


//配置
// requests.interceptors.response.use(undefined, function axiosRetryInterceptor(err) {
//     var config = err.config;
// //    （如果配置都不存在或者超时不存在，）
//     if(!config || !config.retry) {return Promise.reject(err)};
//
//     // 如果为0则为0，否则为自己
//     config.__retryCount = config.__retryCount || 0;
//
//     // 超过重传错误，去报错
//     if(config.__retryCount >= config.retry) {
//         // Reject with the error
//         return Promise.reject(err);
//     }
//
//     // 增加次数
//     config.__retryCount += 1;
//
//     // 超时提示  elementui
//     Message({
//         message: "网络超时，正在重新发起请求，请检查本地网络情况",
//         type: 'error',
//     });
//     //创建新的promise请求，延时你设定的秒数
//     var backoff = new Promise(function(resolve) {
//         //错误信息
//         setTimeout(function() {
//             resolve();
//         }, config.retryDelay || 1);
//     });
//     // 重新发起新的请求
//     return backoff.then(function() {
//
//         return axios(config);
//     });
// });

export default requests;
